lexer grammar JavaLexer;

options {
  language = Java;
}

@header {
package PL.prac8;
}

WHILE: 'while';
IF: 'if';
BREAK: 'break';
ALLAVE: '{';
CLLAVE: '}';
APARENTESIS: '(';
CPARENTESIS: ')';
ACORCHETE: '[';
CCORCHETE: ']';
MAYOR: '>';
MENOR: '<';
IGUAL: ('=');
MAS: '+';
MENOS: '-';
ASTERISCO: '*';
AND: '&&';
ORYACC: '|';
OR: '||';
NOT: '!';
INTERROGANTE: '?';
DOSPUNTOS: ':';
BARRA: '/';
SEPARADOR: ';';
COMA: ',';
PUNTO: '.';

fragment LETRA : ('a'..'z')| ('A'..'Z')|'_'; 
  IDENT: LETRA (DIGITO|LETRA)*;
fragment DIGITO : '0'..'9'; 
  NUMERO : (DIGITO)+ (PUNTO DIGITO*)?;
  
fragment COMILLAS: '"';
CADENA: COMILLAS (~(COMILLAS))* COMILLAS;

fragment COMILLA: '\'';
CARACTER: COMILLA (.)* COMILLA;
fragment ESPACIO: (' ');
fragment NUEVA_LINEA: ('\r\n'|'\n');
BLANCO: (ESPACIO|'\t'|'\r'|NUEVA_LINEA) {$channel = HIDDEN;}; 
COMENTARIO: '/*' (options {greedy=false;}:.)* '*/'{$channel = HIDDEN;};